/*
 * Quercia Luciano
 * Algoritmi e Strutture Dati
 * a.a. 2009-10
 */


#ifndef _NODOL_H_
#define _NODOL_H_


template <class T>
class NodoL {
public:
	NodoL();
	~NodoL();

	typedef NodoL * posizione;

	//Operatori
	T getValue();
	posizione getPrev();
	posizione getSucc();
	void setValue(T);
	void setPrev(posizione);
	void setSucc(posizione);

private:
	T value;
	posizione prev;
	posizione succ;
};



/*****************************
 *        DEFINIZIONI        *
 *     dei metodi di NodoL    *
 *****************************/


template <class T>
NodoL<T>::NodoL() {
	prev = NULL ;
	succ = NULL ;
}


template <class T>
NodoL<T>::~NodoL() {}


template <class T>
T NodoL<T>::getValue() {
	return value;
}


template <class T>
NodoL<T>* NodoL<T>::getPrev() {
	return prev;
}


template <class T>
NodoL<T>* NodoL<T>::getSucc() {
	return succ;
}


template <class T>
void NodoL<T>::setValue(T elem) {
	value = elem ;
}


template <class T>
void NodoL<T>::setPrev(posizione ptr) {
	prev = ptr ;
}


template <class T>
void NodoL<T>::setSucc(posizione ptr) {
	succ = ptr ;
}

#endif
